//index.js
const app = getApp()
const db = wx.cloud.database()

Page({
  data: {
    // 轮播图图片数组
    imgUrls:[
      "../../images/other/1.jpg",
      "../../images/other/2.jpg",
      "../../images/other/3.jpg"
    ],
    listData: [], //用户数组
    current: 'links' // 默认用户展示方式（推荐/最新）
  },

// 生命周期函数--监听页面初次渲染完成
  onReady: function() {
    // 初始化用户数组
    this.getListData()
  } ,

  // 点赞事件
  handleLinks(ev){

    // 获取被点赞用户的id
    let id = ev.target.dataset.id;
  
    // 调用update云函数
    wx.cloud.callFunction({
      name: 'update',
      data:{ //传入以下参数
        collection: 'users',
        doc: id,
        data:"{links : _.inc(1)}"
      }
    }).then((res) => { //修改成功
      
      // console.log(res)
      let updated = res.result.stats.updated
      
      // 如果有修改
      if(updated){
        // 拷贝用户数组
        let cloneListData = [...this.data.listData]
        // 遍历拷贝数组
        for(let i = 0; i < cloneListData.length; i++){
          // 如果当前项的id与被点赞用户的id相同
          if(cloneListData[i]._id == id){
            // 当前项的点赞数 +1
            cloneListData[i].links++
          }
        }
        // 更新用户数组
        this.setData({
          listData : cloneListData
        })
      }
    })
  },

  // 切换用户展示方式
  handleCurrent(ev) {
    // 获取当前所选的方式
    let current = ev.target.dataset.current
    // 展示的方式没有改变
    if( current == this.data.current ){
      return false
    }
    // 更新current
    this.setData({
      current
    },() => {
      // 重新请求数据
      this.getListData()
    })    
  },

  // 获取数据库中的用户数组
  getListData() {
    // 获取数据库users表的用户头像、昵称、展示方式
    db.collection('users')
    .field({
      userPhoto: true,
      nickName: true,
      links: true
    })
    // 根据点赞数进行排序，越大越靠前
    .orderBy(this.data.current, 'desc')
    .get()
    .then((res) => { //获取成功
      // console.log(res.data);
      // 更新用户数组
      this.setData({
        listData: res.data
      })
    })
  },

  // 点击用户头像触发
  handleDetail(ev){
    // 获取点击用户对应的id
    let id = ev.target.dataset.id
    // 跳转到该用户的个人主页
    wx.navigateTo({
      url: '/pages/detail/detail?userId=' + id 
    })
  }

})
